package in.rob.client.page; import in.lib.Constants; import in.lib.event.StarPostEvent; import in.lib.event.UnStarPostEvent; import in.lib.handler.streams.StarredResponseHandler; import in.lib.helper.ResponseHelper; import in.lib.manager.APIManager; import in.lib.manager.UserManager; import in.model.User; import in.rob.client.page.base.PostStreamFragment; import android.os.Bundle; import android.widget.AdapterView.OnItemClickListener; import com.squareup.otto.Subscribe; /** * Fragment used for displaying posts in a fragment list * * Possible extra arguments: * <ul> * <li><b>{@linkplain Constants Constants.EXTRA_USER_ID}</b>: The {@link User} id to search against</li> * <li><b>{@linkplain Constants Constants.EXTRA_USER}</b>: The {@link User} to search against</li> * </ul> */ public class StarredPage extends PostStreamFragment implements OnItemClickListener { private String mUserId = ""; @Override public void retrieveArguments(Bundle arguments) { super.retrieveArguments(arguments); if (getArguments() != null) { if (arguments.containsKey(Constants.EXTRA_USER_ID)) { mUserId = arguments.getString(Constants.EXTRA_USER_ID); } else if (arguments.containsKey(Constants.EXTRA_USER)) { mUserId = ((User)arguments.get(Constants.EXTRA_USER)).getId(); } else { mUserId = UserManager.getUserId(); } } else { mUserId = UserManager.getUserId(); } } @Override public void fetchStream(String lastId, final boolean append) { StarredResponseHandler handler = new StarredResponseHandler(getApplicationContext(), append); handler.setResponseKey(getResponseKeys()[0]); ResponseHelper.getInstance().addResponse(getResponseKeys()[0], handler, this); APIManager.getInstance().getStarredPosts(mUserId, lastId, handler); } @Override public String getCacheFileName() { return String.format(Constants.CACHE_STARRED_LIST_NAME, mUserId); } @Override public String[] getResponseKeys() { return new String[]{String.format(Constants.RESPONSE_STARRED, mUserId)}; } @Subscribe @Override public void onPostStarred(StarPostEvent event) { if (event != null) { prependItem(event.getPost()); } } @Subscribe @Override public void onPostUnStarred(UnStarPostEvent event) { if (event != null) { deleteItem(event.getPost()); } } }